package Strings

import (
	"bytes"
	"log"
)

type String struct {
	strBuf bytes.Buffer
}

func New(str string) *String {
	return &String{strBuf: *bytes.NewBufferString(str)}
}

func (s *String) add(str string) *String {
	write, err := s.strBuf.Write(bytes.NewBufferString(str).Bytes())
	if err != nil {
		log.Println(err.Error())
		return nil
	}
	if write != len(str) {
		log.Println(" write buffer failed")
		return nil
	}
	return s
}

func (s *String) str() string {
	return s.strBuf.String()
}

func (s *String) bytes() []byte {
	return s.strBuf.Bytes()
}
